package me.zhengjie.modules.website.service;

import me.zhengjie.modules.website.domain.ReservationDetailTable;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import me.zhengjie.modules.website.domain.PageResult;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @author system
 * @since 2024-10-23 22:22:57
 */
public interface  ReservationDetailTableService {

    PageResult<ReservationDetailTable> findPage(ReservationDetailTable reservationDetailTable, LocalDateTime startDate, LocalDateTime endDate, Pageable pageable);

    PageResult<ReservationDetailTable> findPage(ReservationDetailTable params, Pageable pageable);

    List<ReservationDetailTable> findList(ReservationDetailTable params);

    ReservationDetailTable findById(Long id);

    ReservationDetailTable insert(ReservationDetailTable reservationDetailTable);

    ReservationDetailTable update(ReservationDetailTable reservationDetailTable);

    void delete(Long id);

    Page<ReservationDetailTable> findReservationDetailsByReservationId(Integer reservationId, Pageable pageable);

    @Transactional
    void approveReservationDetail(Long id, Boolean reviewNotes, String responseContent);
}